package main

import "fmt"

// select {
//    case <-ch1:
//        // 如果从 ch1 信道成功接收数据，则执行该分支代码
//    case ch2 <- 1:
//        // 如果成功向 ch2 信道成功发送数据，则执行该分支代码
//    default:
//        // 如果上面都没有成功，则进入 default 分支处理流程
//}

// select 类似 switch 但只能用于信道的读写操作
func main() {
	size := 10
	chan1 := make(chan int, 11)
	for i := 0; i < size; i++ {
		chan1 <- 1
	}

	chan2 := make(chan int, size)
	for i := 0; i < size; i++ {
		chan2 <- 2
	}

	// select 中的 case 语句是随机执行的 （case1和case2都满足）
	select {
	case chan1 <- 3:
		fmt.Println("插值成功")
	case b := <-chan2:
		fmt.Println(b)
	default:
		fmt.Println("none")
	}
}
